package com.digicom.service.order;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.digicom.common.entity.PayOrder;

import java.util.Date;
import java.util.Map;

/**
 * 支付订单服务接口
 */
public interface PayOrderService extends IService<PayOrder> {
    /**
     * 创建支付订单
     *
     * @param payOrder 支付订单信息
     * @return 订单ID
     */
    Long createOrder(PayOrder payOrder);

    /**
     * 支付订单
     *
     * @param orderNo 订单编号
     * @param payType 支付方式
     * @param tradeNo 交易单号
     * @return 结果
     */
    boolean payOrder(String orderNo, String payType, String tradeNo);

    /**
     * 退款订单
     *
     * @param orderNo 订单编号
     * @param reason 退款原因
     * @return 结果
     */
    boolean refundOrder(String orderNo, String reason);

    /**
     * 查询用户订单列表
     *
     * @param userId 用户ID
     * @param page 分页对象
     * @return 分页结果
     */
    Page<PayOrder> listUserOrders(Long userId, Page<PayOrder> page);

    /**
     * 根据订单编号查询订单
     *
     * @param orderNo 订单编号
     * @return 订单信息
     */
    PayOrder getByOrderNo(String orderNo);

    /**
     * 统计支付金额
     *
     * @param beginDate 开始日期
     * @param endDate 结束日期
     * @return 统计结果
     */
    Map<String, Object> statisticPayAmount(Date beginDate, Date endDate);
} 